home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 26 / Cream of the Crop 26.iso / program / p063b9s.zip / UNIT / DOSSHELL.PAS < prev    next >
Pascal/Delphi Source File  |  1996-04-20  |  3KB  |  89 lines

  1. UNIT DosShell;
  2. {╔══════════════════════════════════════════════════════════════════════════╗}
  3. {║ Procedure to Shell To Dos or Run program      Last changed: 20.04.96  SA ║}
  4. {║                                                                          ║}
  5. {║                         (C) Copyright 1989-94 by                         ║}
  6. {║       Dan Wulff, Jens Sandalgaard, Steen Christensen & S¢ren Ager        ║}
  7. {║                                                                          ║}
  8. {║ This source may not be given to anybody, without the written permission  ║}
  9. {║ from The Portal Team.                                                    ║}
  10. {╚══════════════════════════════════════════════════════════════════════════╝}
  11. {$I POPDEFS.INC}
  12.  
  13. INTERFACE
  14.  
  15. USES Use32;
  16.  
  17. FUNCTION ShellToDos(CONST Prog, Param: String; SaveScr: Boolean): Integer;
  18.  
  19. IMPLEMENTATION
  20.  
  21. USES Dos,
  22. {$IFNDEF OS2}
  23.      OpMacro,
  24. {$ENDIF}
  25.      OpCrt, OpWindow,
  26. {$IFDEF StackCheck}
  27.      OpStack,
  28. {$ENDIF}
  29.      PoPTypes, FileUtil, LogFile, Globals;
  30.  
  31.   FUNCTION ShellToDos(CONST Prog, Param : String; SaveScr: Boolean): Integer;
  32.   VAR
  33.     DosGate         : windowptr;
  34.     swp, CurrentDir : PathStr;
  35.     gemcsr, TmpMode : Word;
  36.     SaveMacroState,LogWasOpen : Boolean;
  37.   BEGIN
  38.     IF SaveScr THEN
  39.     BEGIN
  40.       New(DosGate,InitCustom(1, 1, ScreenWidth, ScreenHeight, DefaultColorSet, wClear+wSaveContents));
  41.       DosGate^.Draw;
  42.     END;
  43.     LogWasOpen:=LogFileOpen;
  44.     CloseFiles(False);
  45.     TmpMode:=LastMode; {SetBlink(On);}
  46.     gemcsr:=CursorTypeSL;
  47.     normalcursor;
  48.     GetDir(0, CurrentDir);
  49. {$IFNDEF OS2}
  50.     WriteMacroFile(MakeTaskFileName(StartPath+'$PMAC$.TMP'));
  51.     SaveMacroState:=MacrosAreOn;
  52.     RemoveMacros;
  53. {$ENDIF}
  54. {$IFDEF StackCheck}
  55.     RestoreInt8;
  56. {$ENDIF}
  57. {$IFNDEF PMode}
  58.     I16;
  59. {$ENDIF}
  60.     IF Cfg.SwapDir<>'' THEN Swp:=Cfg.SwapDir ELSE Swp:='';
  61. {$IFDEF OS2}
  62.     { Lav ny session }
  63. {$ELSE}
  64.     ShellToDos:=ExecDSwap(Prog+' '+Param, False, Nil, swp + MakeTaskFileName(PoPSwapFileName));
  65. {$ENDIF}
  66.     ChangeDir(CurrentDir);
  67. {$IFNDEF PMode}
  68.     R16;
  69. {$ENDIF}
  70. {$IFDEF StackCheck}
  71.     InstallInt8;
  72. {$ENDIF}
  73.     IF Not Cfg.Screen.KeepOffScrMode THEN TextMode(TmpMode);
  74. {$IFNDEF OS2}
  75.     InitMacros;
  76.     ReadMacroFile(MakeTaskFileName(StartPath+'$PMAC$.TMP'),False);
  77.     DeleteFile(MakeTaskFileName(StartPath+'$PMAC$.TMP'));
  78.     MacrosAreOn:=SaveMacroState;
  79. {$ENDIF}
  80.     SetCursorSize(Hi(GemCsr),Lo(GemCsr));
  81.     IF SaveScr THEN
  82.     BEGIN
  83.       DosGate^.EraseHidden; Dispose(DosGate, Done);
  84.     END;
  85.     OpenFiles(LogWasOpen);
  86.   END;
  87.  
  88. END.
  89.